# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from folly.iobuf import IOBuf

def roundtrip_int8(x: object) -> int: ...
def roundtrip_int16(x: object) -> int: ...
def roundtrip_int32(x: object) -> int: ...
def roundtrip_int64(x: object) -> int: ...
def roundtrip_uint8(x: object) -> int: ...
def roundtrip_uint16(x: object) -> int: ...
def roundtrip_uint32(x: object) -> int: ...
def roundtrip_uint64(x: object) -> int: ...
def roundtrip_float(x: object) -> float: ...
def roundtrip_double(x: object) -> float: ...
def roundtrip_bool(x: object) -> bool: ...
def roundtrip_bytes(x: object) -> bytes: ...
def roundtrip_unicode(x: object) -> str: ...
def roundtrip_fallible_unicode(x: object) -> str: ...
def roundtrip_iobuf_stack(x: object) -> IOBuf: ...
def roundtrip_iobuf_heap(x: object) -> IOBuf: ...
def make_unicode(bytes: object) -> str: ...
def roundtrip_int32_list(x: object) -> list[int]: ...
def roundtrip_bool_list(x: object) -> list[bool]: ...
def roundtrip_double_list(x: object) -> list[float]: ...
def roundtrip_bytes_list(x: object) -> list[bytes]: ...
def roundtrip_unicode_list(x: object) -> list[str]: ...
def make_unicode_list(bytes: object) -> list[str]: ...
def roundtrip_int32_set(x: object) -> set[int]: ...
def roundtrip_bool_set(x: object) -> set[bool]: ...
def roundtrip_double_set(x: object) -> set[float]: ...
def roundtrip_bytes_set(x: object) -> set[bytes]: ...
def roundtrip_unicode_set(x: object) -> set[str]: ...
def make_unicode_set(bytes: object) -> set[str]: ...
def roundtrip_int32_bool_map(x: object) -> dict[int, bool]: ...
def roundtrip_byte_float_map(x: object) -> dict[int, float]: ...
def roundtrip_bytes_key_map(x: object) -> dict[bytes, int]: ...
def roundtrip_unicode_key_map(x: object) -> dict[str, int]: ...
def roundtrip_bytes_val_map(x: object) -> dict[int, bytes]: ...
def roundtrip_unicode_val_map(x: object) -> dict[int, str]: ...
def make_unicode_val_map(x: object) -> dict[int, str]: ...

INT8_MIN: int
INT8_MAX: int
INT16_MIN: int
INT16_MAX: int
INT32_MIN: int
INT32_MAX: int
UINT16_MAX: int
UINT8_MAX: int
UINT32_MAX: int
INT64_MIN: int
INT64_MAX: int
UINT64_MAX: int
